﻿using System;
using System.Collections.ObjectModel;
using System.ComponentModel;

namespace Groovy_IM.ViewModels.Accounts
{
    public class AccountItemViewModel : INotifyPropertyChanged
    {
        private int _Protocol;

        public int Protocol
        {
            get { return _Protocol; }
            set { _Protocol = value; NotifyPropertyChanged("Protocol"); }
        }

        private int _pSelected;

        public int pSelected
        {
            get { return _pSelected; }
            set { _pSelected = value; NotifyPropertyChanged("pSelected"); }
        }
        
        private Uri _Selected;

        public Uri Selected
        {
            get { return _Selected; }
            set { _Selected = value; NotifyPropertyChanged("Selected"); }
        }

        private Uri _pProtocol;

        public Uri pProtocol
        {
            get { return _pProtocol; }
            set { _pProtocol = value; NotifyPropertyChanged("pProtocol"); }
        }

        private string Screenname;

        public string Username
        {
            get { return Screenname; }
            set { Screenname = value; NotifyPropertyChanged("Username"); }
        }

        private string _Description;

        public string Description
        {
            get { return _Description; }
            set { _Description = value; NotifyPropertyChanged("Description"); }
        }

        private string _Password;

        public string Password
        {
            get { return _Password; }
            set { _Password = value; NotifyPropertyChanged("Password"); }
        }

        private string _Server;

        public string Server
        {
            get { return _Server; }
            set { _Server = value; NotifyPropertyChanged("Server"); }
        }

        private int _Port;

        public int Port
        {
            get { return _Port; }
            set { _Port = value; NotifyPropertyChanged("Port"); }
        }

        private bool _SignedOn;

        public bool SignedOn
        {
            get { return _SignedOn; }
            set { _SignedOn = value; NotifyPropertyChanged("SignedOn"); }
        }

        private bool _InvisibileLogin;

        public bool InvisibileLogin
        {
            get { return _InvisibileLogin; }
            set { _InvisibileLogin = value; NotifyPropertyChanged("InvisibileLogin"); }
        }

        private bool _SaveDetails;

        public bool SaveDetails
        {
            get { return _SaveDetails; }
            set { _SaveDetails = value; NotifyPropertyChanged("SaveDetails"); }
        }

        private bool _AutoLogin;

        public bool AutoLogin
        {
            get { return _AutoLogin; }
            set { _AutoLogin = value; NotifyPropertyChanged("AutoLogin"); }
        }

        private bool _MobileLogin;

        public bool MobileLogin
        {
            get { return _MobileLogin; }
            set { _MobileLogin = value; NotifyPropertyChanged("MobileLogin"); }
        }

        private string _Tag;

        public string Tag
        {
            get { return _Tag; }
            set { _Tag = value; NotifyPropertyChanged("Tag"); }
        }

        public event PropertyChangedEventHandler PropertyChanged;

        private void NotifyPropertyChanged(String propertyName)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (null != handler)
            {
                handler(this, new PropertyChangedEventArgs(propertyName));
            }
        }
    }
}
